package com.example.bd;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import com.example.trabalho_final.modelo.MinhaCategoria;

public class MinhaCategoriaDAO {
	private SQLiteDatabase database;
	private final String[] columns = { CustomSQLiteOpenHelper.COLUMN_ID,
			CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_DE,
			CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_DE,
			CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_DE,
			CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_PARA,
			CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_PARA,
			CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_PARA };
		
	private final CustomSQLiteOpenHelper sqliteOpenHelper;

	public MinhaCategoriaDAO(Context context) {
		sqliteOpenHelper = new CustomSQLiteOpenHelper(context);
	}

	public void open() throws SQLException {
		database = sqliteOpenHelper.getWritableDatabase();
	}

	public void close() {
		sqliteOpenHelper.close();
	}

	public MinhaCategoria create(MinhaCategoria minha_categoria) {
		//database.execSQL("DROP TABLE IF EXISTS " + CustomSQLiteOpenHelper.TABLE_GLICOSE);
		//database.execSQL(CustomSQLiteOpenHelper.DATABASE_CREATE);
		//open();
		ContentValues values = new ContentValues();
//		System.out.println(minha_categoria.getValor_campo_de());
//		System.out.println(minha_categoria.getUnidadeCampo_de());
//		System.out.println(minha_categoria.getDo_que_campo_de());
//		System.out.println(minha_categoria.get_valor_campo_para());
//		System.out.println(minha_categoria.getUnidadeCampo_para());
//		System.out.println(minha_categoria.getDo_que_campo_para());		
		values.put(CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_DE, minha_categoria.getValor_campo_de());
		values.put(CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_DE, minha_categoria.getUnidadeCampo_de());
		values.put(CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_DE, minha_categoria.getDo_que_campo_de());
		System.out.println(minha_categoria.get_valor_campo_para());
		values.put(CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_PARA, minha_categoria.get_valor_campo_para());
		values.put(CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_PARA, minha_categoria.getUnidadeCampo_para());
		values.put(CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_PARA, minha_categoria.getDo_que_campo_para());
		long insertId = database.insert(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				null, values);

//		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
//				columns, CustomSQLiteOpenHelper.COLUMN_ID + " = " + insertId,
//				null, null, null, null);
//		cursor.moveToFirst();
//
//		minha_categoria newminha_categoria= new minha_categoria();
//		newminha_categoria.setId(cursor.getInt(0));
//		newminha_categoria.setGlicose(cursor.getFloat(1));
//		newminha_categoria.setData(cursor.getString(2));
//		newminha_categoria.setMomento(cursor.getString(3));
//		newminha_categoria.setResultado(cursor.getString(4));
//		cursor.close();
		minha_categoria.setId(insertId);
		return minha_categoria;
	}

	public void delete(MinhaCategoria minha_categoria) {
		long id = minha_categoria.getId();
		database.delete(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				CustomSQLiteOpenHelper.COLUMN_ID + " = " + id, null);
	}

	public List<MinhaCategoria> getAll() {
		List<MinhaCategoria> minhas_categorias= new ArrayList<MinhaCategoria>();
		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				columns, null, null, null, null, null);
		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {			
			MinhaCategoria minha_categoria = new MinhaCategoria();
			minha_categoria.setId(cursor.getLong(0));
			minha_categoria.setValor_campo_de(cursor.getFloat(1));
			minha_categoria.setUnidadeCampo_de(cursor.getString(2));
			minha_categoria.setDo_que_campo_de(cursor.getString(3));
			minha_categoria.set_valor_campo_para(cursor.getFloat(4));
			minha_categoria.setUnidadeCampo_para(cursor.getString(5));
			minha_categoria.setDo_que_campo_para(cursor.getString(6));
			minhas_categorias.add(minha_categoria);
			cursor.moveToNext();
		}
		cursor.close();
		System.out.println(minhas_categorias);
		return minhas_categorias;
	}

//	public String[] getAllInStrings() {		
//		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_GLICOSE,
//				columns, null, null, null, null, null);
//		cursor.moveToFirst();
//		String[] glicoses = new String[cursor.getCount()];
//		int i = 0;
//		while (!cursor.isAfterLast()) {
//			glicoses[i] = cursor.getLong(0) + "-" + cursor.getFloat(1) + " - "
//					+ formata_data(cursor.getString(2)) + " - "
//					+ cursor.getString(3) + " - " + cursor.getString(4);
//			cursor.moveToNext();
//			i++;
//		}
//		cursor.close();
//		return glicoses;
//	}

	public MinhaCategoria update(MinhaCategoria minha_categoria) {
		ContentValues values = new ContentValues();
		values.put(CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_DE, minha_categoria.getValor_campo_de());
		values.put(CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_DE, minha_categoria.getUnidadeCampo_de());
		values.put(CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_DE, minha_categoria.getDo_que_campo_de());
		values.put(CustomSQLiteOpenHelper.COLUMN_VALOR_CAMPO_PARA, minha_categoria.get_valor_campo_para());
		values.put(CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_PARA, minha_categoria.getUnidadeCampo_para());
		values.put(CustomSQLiteOpenHelper.COLUMN_DO_QUE_CAMPO_PARA, minha_categoria.getDo_que_campo_para());
		database.update(CustomSQLiteOpenHelper.TABLE_CONVERSAO, values,
				CustomSQLiteOpenHelper.COLUMN_ID + " = " + minha_categoria.getId(),
				null);
		return minha_categoria;
	}
	
	public List<MinhaCategoria> buscar_campo_de(String campo_de) {
		List<MinhaCategoria> minhas_categorias = new ArrayList<MinhaCategoria>();

		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				columns, CustomSQLiteOpenHelper.COLUMN_UNIDADE_MEDIDA_CAMPO_DE+" like %" +campo_de+"%", null, null, null, null);
		cursor.moveToFirst();
	
		while (!cursor.isAfterLast()) {	
			MinhaCategoria minha_categoria = new MinhaCategoria();
			minha_categoria.setId(cursor.getLong(0));
			minha_categoria.setValor_campo_de(cursor.getFloat(1));
			minha_categoria.setUnidadeCampo_de(cursor.getString(2));
			minha_categoria.setDo_que_campo_de(cursor.getString(3));
			minha_categoria.set_valor_campo_para(cursor.getFloat(4));
			minha_categoria.setUnidadeCampo_para(cursor.getString(5));
			minha_categoria.setDo_que_campo_para(cursor.getString(6));
			minhas_categorias.add(minha_categoria);
		}
		cursor.close();
		return minhas_categorias;
	}

	public MinhaCategoria buscar(long id) {
		MinhaCategoria minha_categoria = new MinhaCategoria();

		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				columns, "_id = " + id, null, null, null, null);
		cursor.moveToFirst();
		System.out.println("ID = "+id);
		minha_categoria.setId(cursor.getLong(0));
		minha_categoria.setValor_campo_de(cursor.getFloat(1));
		minha_categoria.setUnidadeCampo_de(cursor.getString(2));
		minha_categoria.setDo_que_campo_de(cursor.getString(3));
		minha_categoria.set_valor_campo_para(cursor.getFloat(4));
		minha_categoria.setUnidadeCampo_para(cursor.getString(5));
		minha_categoria.setDo_que_campo_para(cursor.getString(6));
		cursor.close();
		return minha_categoria;
	}

	public String[] getAutoComplete() {		
		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				columns, null, null, null, null, null);
		final String[] minhas_categorias=new String[cursor.getCount()*2];
		cursor.moveToFirst();		
		int i = 0;
		while (!cursor.isAfterLast()) {			
			minhas_categorias[i] = cursor.getString(2);i+=1;
//System.out.println(minhas_categorias[i-1]);
			minhas_categorias[i] = cursor.getString(3);i+=1;
//			System.out.println(minhas_categorias[i-1]);
//			minhas_categorias[i] = cursor.getString(5);i+=1;
//			System.out.println(minhas_categorias[i-1]);
//			minhas_categorias[i] = cursor.getString(6);i+=1;			
			cursor.moveToNext();
		}
		//System.out.println("TEMOS "+cursor.getCount()*4+" registros");
		cursor.close();
		return minhas_categorias;
	}

	public MinhaCategoria[] getDe() {		
		Cursor cursor = database.query(CustomSQLiteOpenHelper.TABLE_CONVERSAO,
				columns, null, null, null, null, null);
		MinhaCategoria[] minhas_categorias= new MinhaCategoria[cursor.getCount()];
		cursor.moveToFirst();
		int i=0;
		while (!cursor.isAfterLast()) {			
			MinhaCategoria minha_categoria = new MinhaCategoria();
			minha_categoria.setId(cursor.getLong(0));
			minha_categoria.setValor_campo_de(cursor.getFloat(1));
			minha_categoria.setUnidadeCampo_de(cursor.getString(2));
			minha_categoria.setDo_que_campo_de(cursor.getString(3));
			minha_categoria.set_valor_campo_para(cursor.getFloat(4));
			minha_categoria.setUnidadeCampo_para(cursor.getString(5));
			minha_categoria.setDo_que_campo_para(cursor.getString(6));
			minhas_categorias[i]=minha_categoria;
			i++;
			cursor.moveToNext();
		}
		
		return minhas_categorias;
		 		
	}

}